diff --git a/board/MAI/AmigaOneG3SE/ps2kbd.c b/board/MAI/AmigaOneG3SE/ps2kbd.c
index a297005..aa164b0 100644
--- a/board/MAI/AmigaOneG3SE/ps2kbd.c
+++ b/board/MAI/AmigaOneG3SE/ps2kbd.c
@@ -34,7 +34,7 @@
  */
 #include <common.h>
 #include <asm/processor.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include "ps2kbd.h"
 
 
@@ -226,7 +226,7 @@
 int drv_isa_kbd_init (void)
 {
 	int error;
-	device_t kbddev ;
+	struct stdio_dev kbddev ;
 	char *stdinname  = getenv ("stdin");
 
 	if(isa_kbd_init() == -1)
@@ -239,7 +239,7 @@
 	kbddev.getc = kbd_getc ;
 	kbddev.tstc = kbd_testc ;
 
-	error = device_register (&kbddev);
+	error = stdio_register (&kbddev);
 	if(error==0) {
 		/* check if this is the standard input device */
 		if(strcmp(stdinname,DEVNAME)==0) {
diff --git a/board/MAI/AmigaOneG3SE/video.c b/board/MAI/AmigaOneG3SE/video.c
index fc27c68..e24e28b 100644
--- a/board/MAI/AmigaOneG3SE/video.c
+++ b/board/MAI/AmigaOneG3SE/video.c
@@ -22,7 +22,7 @@
  */
 
 #include <common.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include "memio.h"
 #include <part.h>
 
@@ -98,7 +98,7 @@
 int drv_video_init(void)
 {
     int error, devices = 1 ;
-    device_t vgadev ;
+    struct stdio_dev vgadev ;
     if (video_inited) return 1;
     video_inited = 1;
     video_init();
@@ -112,7 +112,7 @@
     vgadev.tstc = NULL;
     vgadev.start = video_start;
 
-    error = device_register (&vgadev);
+    error = stdio_register (&vgadev);
 
     if (error == 0)
     {
diff --git a/board/bf527-ezkit/video.c b/board/bf527-ezkit/video.c
index 2df6717..0b6b7b2 100644
--- a/board/bf527-ezkit/video.c
+++ b/board/bf527-ezkit/video.c
@@ -14,7 +14,7 @@
 #include <asm/mach-common/bits/dma.h>
 #include <i2c.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 int gunzip(void *, int, unsigned char *, unsigned long *);
 
@@ -272,7 +272,7 @@
 int drv_video_init(void)
 {
 	int error, devices = 1;
-	device_t videodev;
+	struct stdio_dev videodev;
 
 	u8 *dst;
 	u32 fbmem_size = LCD_X_RES * LCD_Y_RES * LCD_PIXEL_SIZE + ACTIVE_VIDEO_MEM_OFFSET;
@@ -311,7 +311,7 @@
 	videodev.putc = video_putc;	/* 'putc' function */
 	videodev.puts = video_puts;	/* 'puts' function */
 
-	error = device_register(&videodev);
+	error = stdio_register(&videodev);
 
 	return (error == 0) ? devices : error;
 }
diff --git a/board/bf533-stamp/video.c b/board/bf533-stamp/video.c
index 3c15eaa..28ffa61 100644
--- a/board/bf533-stamp/video.c
+++ b/board/bf533-stamp/video.c
@@ -18,7 +18,7 @@
 #include <asm/mach-common/bits/dma.h>
 #include <i2c.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 int gunzip(void *, int, unsigned char *, unsigned long *);
 
@@ -154,7 +154,7 @@
 
 int drv_video_init(void)
 {
-	device_t videodev;
+	struct stdio_dev videodev;
 
 	video_init((void *)NTSC_FRAME_ADDR);
 
@@ -163,5 +163,5 @@
 	videodev.ext = DEV_EXT_VIDEO;
 	videodev.flags = DEV_FLAGS_SYSTEM;
 
-	return device_register(&videodev);
+	return stdio_register(&videodev);
 }
diff --git a/board/bf548-ezkit/video.c b/board/bf548-ezkit/video.c
index a6f52bd..f4f1bec 100644
--- a/board/bf548-ezkit/video.c
+++ b/board/bf548-ezkit/video.c
@@ -14,7 +14,7 @@
 #include <asm/mach-common/bits/dma.h>
 #include <i2c.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 int gunzip(void *, int, unsigned char *, unsigned long *);
 
@@ -282,7 +282,7 @@
 int drv_video_init(void)
 {
 	int error, devices = 1;
-	device_t videodev;
+	struct stdio_dev videodev;
 
 	u8 *dst;
 	u32 fbmem_size = LCD_X_RES * LCD_Y_RES * LCD_PIXEL_SIZE + ACTIVE_VIDEO_MEM_OFFSET;
@@ -321,7 +321,7 @@
 	videodev.putc = video_putc;	/* 'putc' function */
 	videodev.puts = video_puts;	/* 'puts' function */
 
-	error = device_register(&videodev);
+	error = stdio_register(&videodev);
 
 	return (error == 0) ? devices : error;
 }
diff --git a/board/bmw/bmw.c b/board/bmw/bmw.c
index 41ce14f..870011e 100644
--- a/board/bmw/bmw.c
+++ b/board/bmw/bmw.c
@@ -26,7 +26,7 @@
 #include <watchdog.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <net.h>
 #include <timestamp.h>
 #include <dtt.h>
diff --git a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
index 0ad878c..63eba0c 100644
--- a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
+++ b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
@@ -33,7 +33,7 @@
 #include "../common/fsl_diu_fb.h"
 
 #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
-#include <devices.h>
+#include <stdio_dev.h>
 #include <video_fb.h>
 #endif
 
diff --git a/board/linkstation/avr.c b/board/linkstation/avr.c
index 782b24a..ec6d400 100644
--- a/board/linkstation/avr.c
+++ b/board/linkstation/avr.c
@@ -22,7 +22,7 @@
  */
 #include <common.h>
 #include <ns16550.h>
-#include <console.h>
+#include <stdio_dev.h>
 
 /* Button codes from the AVR */
 #define PWRR			0x20		/* Power button release	*/
diff --git a/board/mpl/common/common_util.c b/board/mpl/common/common_util.c
index d169391..243e3eb 100644
--- a/board/mpl/common/common_util.c
+++ b/board/mpl/common/common_util.c
@@ -29,7 +29,7 @@
 #include <asm/processor.h>
 #include <asm/byteorder.h>
 #include <i2c.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <pci.h>
 #include <malloc.h>
 #include <bzlib.h>
diff --git a/board/mpl/common/isa.c b/board/mpl/common/isa.c
index 91829d4..5d467b4 100644
--- a/board/mpl/common/isa.c
+++ b/board/mpl/common/isa.c
@@ -26,7 +26,7 @@
 
 #include <common.h>
 #include <asm/processor.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include "isa.h"
 #include "piix4_pci.h"
 #include "kbd.h"
diff --git a/board/mpl/common/kbd.c b/board/mpl/common/kbd.c
index a457635..b0a9620 100644
--- a/board/mpl/common/kbd.c
+++ b/board/mpl/common/kbd.c
@@ -28,7 +28,7 @@
  */
 #include <common.h>
 #include <asm/processor.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include "isa.h"
 #include "kbd.h"
 
@@ -215,7 +215,7 @@
 int drv_isa_kbd_init (void)
 {
 	int error;
-	device_t kbddev ;
+	struct stdio_dev kbddev ;
 	char *stdinname  = getenv ("stdin");
 
 	if(isa_kbd_init()==-1)
@@ -228,7 +228,7 @@
 	kbddev.getc = kbd_getc ;
 	kbddev.tstc = kbd_testc ;
 
-	error = device_register (&kbddev);
+	error = stdio_register (&kbddev);
 	if(error==0) {
 		/* check if this is the standard input device */
 		if(strcmp(stdinname,DEVNAME)==0) {
diff --git a/board/mpl/pati/pati.c b/board/mpl/pati/pati.c
index 85c5af9..8f23d2d 100644
--- a/board/mpl/pati/pati.c
+++ b/board/mpl/pati/pati.c
@@ -46,7 +46,7 @@
 
 #include <common.h>
 #include <mpc5xx.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <pci_ids.h>
 #define PLX9056_LOC
 #include "plx9056.h"
@@ -447,7 +447,7 @@
 int recbuf[REC_BUFFER_SIZE];
 static int r_ptr = 0;
 int w_ptr;
-device_t pci_con_dev;
+struct stdio_dev pci_con_dev;
 int conn=0;
 int buff_full=0;
 
@@ -584,7 +584,7 @@
 	pci_con_dev.puts = pci_con_puts;
 	pci_con_dev.getc = pci_con_getc;
 	pci_con_dev.tstc = pci_con_tstc;
-	device_register (&pci_con_dev);
+	stdio_register (&pci_con_dev);
 	printf("PATI ready for PCI connection, type ctrl-c for exit\n");
 	do {
 		udelay(10);
diff --git a/board/netphone/phone_console.c b/board/netphone/phone_console.c
index d9b0ad3..3d82e04 100644
--- a/board/netphone/phone_console.c
+++ b/board/netphone/phone_console.c
@@ -37,7 +37,7 @@
 
 #include <version.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 #include <sed156x.h>
 
@@ -325,7 +325,7 @@
 
 int drv_phone_init(void)
 {
-	device_t console_dev;
+	struct stdio_dev console_dev;
 
 	console_init();
 
@@ -340,7 +340,7 @@
 	console_dev.tstc = phone_tstc;	/* 'tstc' function */
 	console_dev.getc = phone_getc;	/* 'getc' function */
 
-	if (device_register(&console_dev) == 0)
+	if (stdio_register(&console_dev) == 0)
 		return 1;
 
 	return 0;
diff --git a/board/rbc823/kbd.c b/board/rbc823/kbd.c
index 1d48f6d..853cbde 100644
--- a/board/rbc823/kbd.c
+++ b/board/rbc823/kbd.c
@@ -30,7 +30,7 @@
 #include <common.h>
 #include <watchdog.h>
 #include <commproc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <lcd.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -249,18 +249,18 @@
 int drv_keyboard_init(void)
 {
 	int error = 0;
-	device_t kbd_dev;
+	struct stdio_dev kbd_dev;
 
 	if (0) {
 		/* register the keyboard */
-		memset (&kbd_dev, 0, sizeof(device_t));
+		memset (&kbd_dev, 0, sizeof(struct stdio_dev));
 		strcpy(kbd_dev.name, "kbd");
 		kbd_dev.flags =  DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
 		kbd_dev.putc = NULL;
 		kbd_dev.puts = NULL;
 		kbd_dev.getc = smc1_getc;
 		kbd_dev.tstc = smc1_tstc;
-		error = device_register (&kbd_dev);
+		error = stdio_register (&kbd_dev);
 	} else {
 		lcd_is_enabled = 0;
 		lcd_disable();
diff --git a/board/trab/vfd.c b/board/trab/vfd.c
index 37d3aa4..e5ca4ab 100644
--- a/board/trab/vfd.c
+++ b/board/trab/vfd.c
@@ -36,7 +36,7 @@
 #include <version.h>
 #include <stdarg.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <s3c2400.h>
 
 DECLARE_GLOBAL_DATA_PTR;
diff --git a/common/Makefile b/common/Makefile
index c8a997b..f90e5dd 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -32,7 +32,6 @@
 COBJS-y += circbuf.o
 COBJS-y += console.o
 COBJS-y += command.o
-COBJS-y += devices.o
 COBJS-y += dlmalloc.o
 COBJS-y += exports.o
 COBJS-$(CONFIG_SYS_HUSH_PARSER) += hush.o
@@ -40,6 +39,7 @@
 COBJS-y += memsize.o
 COBJS-y += s_record.o
 COBJS-$(CONFIG_SERIAL_MULTI) += serial.o
+COBJS-y += stdio.o
 COBJS-y += xyzModem.o
 
 # core command
diff --git a/common/cmd_console.c b/common/cmd_console.c
index f861f83..178fbfe 100644
--- a/common/cmd_console.c
+++ b/common/cmd_console.c
@@ -26,22 +26,22 @@
  */
 #include <common.h>
 #include <command.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 extern void _do_coninfo (void);
 int do_coninfo (cmd_tbl_t * cmd, int flag, int argc, char *argv[])
 {
 	int l;
-	struct list_head *list = device_get_list();
+	struct list_head *list = stdio_get_list();
 	struct list_head *pos;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	/* Scan for valid output and input devices */
 
 	puts ("List of available devices:\n");
 
 	list_for_each(pos, list) {
-		dev = list_entry(pos, device_t, list);
+		dev = list_entry(pos, struct stdio_dev, list);
 
 		printf ("%-8s %08x %c%c%c ",
 			dev->name,
diff --git a/common/cmd_log.c b/common/cmd_log.c
index d422d9f..3653fe1 100644
--- a/common/cmd_log.c
+++ b/common/cmd_log.c
@@ -42,7 +42,7 @@
 
 #include <common.h>
 #include <command.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <post.h>
 #include <logbuff.h>
 
@@ -142,7 +142,7 @@
 
 int drv_logbuff_init (void)
 {
-	device_t logdev;
+	struct stdio_dev logdev;
 	int rc;
 
 	/* Device initialization */
@@ -154,7 +154,7 @@
 	logdev.putc  = logbuff_putc;		/* 'putc' function */
 	logdev.puts  = logbuff_puts;		/* 'puts' function */
 
-	rc = device_register (&logdev);
+	rc = stdio_register (&logdev);
 
 	return (rc == 0) ? 1 : rc;
 }
diff --git a/common/cmd_terminal.c b/common/cmd_terminal.c
index fd3dd48..60ec378 100644
--- a/common/cmd_terminal.c
+++ b/common/cmd_terminal.c
@@ -26,19 +26,19 @@
  */
 #include <common.h>
 #include <command.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <serial.h>
 
 int do_terminal(cmd_tbl_t * cmd, int flag, int argc, char *argv[])
 {
 	int last_tilde = 0;
-	device_t *dev = NULL;
+	struct stdio_dev *dev = NULL;
 
 	if (argc < 1)
 		return -1;
 
 	/* Scan for selected output/input device */
-	dev = device_get_by_name(argv[1]);
+	dev = stdio_get_by_name(argv[1]);
 	if (!dev)
 		return -1;
 
diff --git a/common/console.c b/common/console.c
index 2add047..0a36d2f 100644
--- a/common/console.c
+++ b/common/console.c
@@ -24,7 +24,7 @@
 #include <common.h>
 #include <stdarg.h>
 #include <malloc.h>
-#include <console.h>
+#include <stdio_dev.h>
 #include <exports.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -48,7 +48,7 @@
 
 #endif /* CONFIG_SYS_CONSOLE_IS_IN_ENV */
 
-static int console_setfile(int file, device_t * dev)
+static int console_setfile(int file, struct stdio_dev * dev)
 {
 	int error = 0;
 
@@ -96,8 +96,8 @@
 #if defined(CONFIG_CONSOLE_MUX)
 /** Console I/O multiplexing *******************************************/
 
-static device_t *tstcdev;
-device_t **console_devices[MAX_FILES];
+static struct stdio_dev *tstcdev;
+struct stdio_dev **console_devices[MAX_FILES];
 int cd_count[MAX_FILES];
 
 /*
@@ -119,7 +119,7 @@
 static int console_tstc(int file)
 {
 	int i, ret;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	disable_ctrlc(1);
 	for (i = 0; i < cd_count[file]; i++) {
@@ -141,7 +141,7 @@
 static void console_putc(int file, const char c)
 {
 	int i;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	for (i = 0; i < cd_count[file]; i++) {
 		dev = console_devices[file][i];
@@ -153,7 +153,7 @@
 static void console_puts(int file, const char *s)
 {
 	int i;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	for (i = 0; i < cd_count[file]; i++) {
 		dev = console_devices[file][i];
@@ -167,7 +167,7 @@
 	iomux_printdevs(file);
 }
 
-static inline void console_doenv(int file, device_t *dev)
+static inline void console_doenv(int file, struct stdio_dev *dev)
 {
 	iomux_doenv(file, dev->name);
 }
@@ -197,7 +197,7 @@
 	printf("%s\n", stdio_devices[file]->name);
 }
 
-static inline void console_doenv(int file, device_t *dev)
+static inline void console_doenv(int file, struct stdio_dev *dev)
 {
 	console_setfile(file, dev);
 }
@@ -479,11 +479,11 @@
 
 /** U-Boot INIT FUNCTIONS *************************************************/
 
-device_t *search_device(int flags, char *name)
+struct stdio_dev *search_device(int flags, char *name)
 {
-	device_t *dev;
+	struct stdio_dev *dev;
 
-	dev = device_get_by_name(name);
+	dev = stdio_get_by_name(name);
 
 	if (dev && (dev->flags & flags))
 		return dev;
@@ -494,7 +494,7 @@
 int console_assign(int file, char *devname)
 {
 	int flag;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	/* Check for valid file */
 	switch (file) {
@@ -537,7 +537,7 @@
 int console_init_r(void)
 {
 	char *stdinname, *stdoutname, *stderrname;
-	device_t *inputdev = NULL, *outputdev = NULL, *errdev = NULL;
+	struct stdio_dev *inputdev = NULL, *outputdev = NULL, *errdev = NULL;
 #ifdef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
 	int i;
 #endif /* CONFIG_SYS_CONSOLE_ENV_OVERWRITE */
@@ -645,11 +645,11 @@
 /* Called after the relocation - use desired console functions */
 int console_init_r(void)
 {
-	device_t *inputdev = NULL, *outputdev = NULL;
+	struct stdio_dev *inputdev = NULL, *outputdev = NULL;
 	int i;
-	struct list_head *list = device_get_list();
+	struct list_head *list = stdio_get_list();
 	struct list_head *pos;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 #ifdef CONFIG_SPLASH_SCREEN
 	/*
@@ -662,7 +662,7 @@
 
 	/* Scan devices looking for input and output devices */
 	list_for_each(pos, list) {
-		dev = list_entry(pos, device_t, list);
+		dev = list_entry(pos, struct stdio_dev, list);
 
 		if ((dev->flags & DEV_FLAGS_INPUT) && (inputdev == NULL)) {
 			inputdev = dev;
diff --git a/common/iomux.c b/common/iomux.c
index bdcc853..91d98e9 100644
--- a/common/iomux.c
+++ b/common/iomux.c
@@ -29,7 +29,7 @@
 void iomux_printdevs(const int console)
 {
 	int i;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	for (i = 0; i < cd_count[console]; i++) {
 		dev = console_devices[console][i];
@@ -43,8 +43,8 @@
 {
 	char *console_args, *temp, **start;
 	int i, j, k, io_flag, cs_idx, repeat;
-	device_t *dev;
-	device_t **cons_set;
+	struct stdio_dev *dev;
+	struct stdio_dev **cons_set;
 
 	console_args = strdup(arg);
 	if (console_args == NULL)
@@ -85,7 +85,7 @@
 		*temp = '\0';
 		start[i] = temp + 1;
 	}
-	cons_set = (device_t **)calloc(i, sizeof(device_t *));
+	cons_set = (struct stdio_dev **)calloc(i, sizeof(struct stdio_dev *));
 	if (cons_set == NULL) {
 		free(start);
 		free(console_args);
@@ -158,14 +158,14 @@
 	} else {
 		/* Works even if console_devices[console] is NULL. */
 		console_devices[console] =
-			(device_t **)realloc(console_devices[console],
-			cs_idx * sizeof(device_t *));
+			(struct stdio_dev **)realloc(console_devices[console],
+			cs_idx * sizeof(struct stdio_dev *));
 		if (console_devices[console] == NULL) {
 			free(cons_set);
 			return 1;
 		}
 		memcpy(console_devices[console], cons_set, cs_idx *
-			sizeof(device_t *));
+			sizeof(struct stdio_dev *));
 
 		cd_count[console] = cs_idx;
 	}
diff --git a/common/lcd.c b/common/lcd.c
index b9a698d..c87de0b 100644
--- a/common/lcd.c
+++ b/common/lcd.c
@@ -34,7 +34,7 @@
 #include <command.h>
 #include <stdarg.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #if defined(CONFIG_POST)
 #include <post.h>
 #endif
@@ -355,7 +355,7 @@
 
 int drv_lcd_init (void)
 {
-	device_t lcddev;
+	struct stdio_dev lcddev;
 	int rc;
 
 	lcd_base = (void *)(gd->fb_base);
@@ -373,7 +373,7 @@
 	lcddev.putc  = lcd_putc;		/* 'putc' function */
 	lcddev.puts  = lcd_puts;		/* 'puts' function */
 
-	rc = device_register (&lcddev);
+	rc = stdio_register (&lcddev);
 
 	return (rc == 0) ? 1 : rc;
 }
diff --git a/common/serial.c b/common/serial.c
index 5d0a73c..41a24c2 100644
--- a/common/serial.c
+++ b/common/serial.c
@@ -23,7 +23,7 @@
 
 #include <common.h>
 #include <serial.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -142,9 +142,9 @@
 	serial_assign (default_serial_console ()->name);
 }
 
-void serial_devices_init (void)
+void serial_stdio_init (void)
 {
-	device_t dev;
+	struct stdio_dev dev;
 	struct serial_device *s = serial_devices;
 
 	while (s) {
@@ -159,7 +159,7 @@
 		dev.getc = s->getc;
 		dev.tstc = s->tstc;
 
-		device_register (&dev);
+		stdio_register (&dev);
 
 		s = s->next;
 	}
diff --git a/common/devices.c b/common/stdio.c
similarity index 84%
rename from common/devices.c
rename to common/stdio.c
index ba53c9b..697df5a 100644
--- a/common/devices.c
+++ b/common/stdio.c
@@ -25,7 +25,7 @@
 #include <common.h>
 #include <stdarg.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <serial.h>
 #ifdef CONFIG_LOGBUFFER
 #include <logbuff.h>
@@ -36,8 +36,8 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static device_t devs;
-device_t *stdio_devices[] = { NULL, NULL, NULL };
+static struct stdio_dev devs;
+struct stdio_dev *stdio_devices[] = { NULL, NULL, NULL };
 char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" };
 
 #if defined(CONFIG_SPLASH_SCREEN) && !defined(CONFIG_SYS_DEVICE_NULLDEV)
@@ -70,7 +70,7 @@
 
 static void drv_system_init (void)
 {
-	device_t dev;
+	struct stdio_dev dev;
 
 	memset (&dev, 0, sizeof (dev));
 
@@ -88,7 +88,7 @@
 	dev.tstc = serial_tstc;
 #endif
 
-	device_register (&dev);
+	stdio_register (&dev);
 
 #ifdef CONFIG_SYS_DEVICE_NULLDEV
 	memset (&dev, 0, sizeof (dev));
@@ -100,7 +100,7 @@
 	dev.getc = nulldev_input;
 	dev.tstc = nulldev_input;
 
-	device_register (&dev);
+	stdio_register (&dev);
 #endif
 }
 
@@ -108,21 +108,21 @@
  * DEVICES
  **************************************************************************
  */
-struct list_head* device_get_list(void)
+struct list_head* stdio_get_list(void)
 {
 	return &(devs.list);
 }
 
-device_t* device_get_by_name(char* name)
+struct stdio_dev* stdio_get_by_name(char* name)
 {
 	struct list_head *pos;
-	device_t *dev;
+	struct stdio_dev *dev;
 
 	if(!name)
 		return NULL;
 
 	list_for_each(pos, &(devs.list)) {
-		dev = list_entry(pos, device_t, list);
+		dev = list_entry(pos, struct stdio_dev, list);
 		if(strcmp(dev->name, name) == 0)
 			return dev;
 	}
@@ -130,29 +130,29 @@
 	return NULL;
 }
 
-device_t* device_clone(device_t *dev)
+struct stdio_dev* stdio_clone(struct stdio_dev *dev)
 {
-	device_t *_dev;
+	struct stdio_dev *_dev;
 
 	if(!dev)
 		return NULL;
 
-	_dev = calloc(1, sizeof(device_t));
+	_dev = calloc(1, sizeof(struct stdio_dev));
 
 	if(!_dev)
 		return NULL;
 
-	memcpy(_dev, dev, sizeof(device_t));
+	memcpy(_dev, dev, sizeof(struct stdio_dev));
 	strncpy(_dev->name, dev->name, 16);
 
 	return _dev;
 }
 
-int device_register (device_t * dev)
+int stdio_register (struct stdio_dev * dev)
 {
-	device_t *_dev;
+	struct stdio_dev *_dev;
 
-	_dev = device_clone(dev);
+	_dev = stdio_clone(dev);
 	if(!_dev)
 		return -1;
 	list_add_tail(&(_dev->list), &(devs.list));
@@ -162,15 +162,15 @@
 /* deregister the device "devname".
  * returns 0 if success, -1 if device is assigned and 1 if devname not found
  */
-#ifdef	CONFIG_SYS_DEVICE_DEREGISTER
-int device_deregister(char *devname)
+#ifdef	CONFIG_SYS_STDIO_DEREGISTER
+int stdio_deregister(char *devname)
 {
 	int l;
 	struct list_head *pos;
-	device_t *dev;
+	struct stdio_dev *dev;
 	char temp_names[3][8];
 
-	dev = device_get_by_name(devname);
+	dev = stdio_get_by_name(devname);
 
 	if(!dev) /* device not found */
 		return -1;
@@ -189,7 +189,7 @@
 
 	/* reassign Device list */
 	list_for_each(pos, &(devs.list)) {
-		dev = list_entry(pos, device_t, list);
+		dev = list_entry(pos, struct stdio_dev, list);
 		for (l=0 ; l< MAX_FILES; l++) {
 			if(strcmp(dev->name, temp_names[l]) == 0)
 				stdio_devices[l] = dev;
@@ -197,9 +197,9 @@
 	}
 	return 0;
 }
-#endif	/* CONFIG_SYS_DEVICE_DEREGISTER */
+#endif	/* CONFIG_SYS_STDIO_DEREGISTER */
 
-int devices_init (void)
+int stdio_init (void)
 {
 #ifndef CONFIG_ARM	/* already relocated for current ARM implementation */
 	ulong relocation_offset = gd->reloc_off;
@@ -235,7 +235,7 @@
 #endif
 	drv_system_init ();
 #ifdef CONFIG_SERIAL_MULTI
-	serial_devices_init ();
+	serial_stdio_init ();
 #endif
 #ifdef CONFIG_USB_TTY
 	drv_usbtty_init ();
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index e0d006c..b458d77 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -25,7 +25,7 @@
  *
  */
 #include <common.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <asm/byteorder.h>
 
 #include <usb.h>
@@ -153,7 +153,7 @@
 int drv_usb_kbd_init(void)
 {
 	int error,i;
-	device_t usb_kbd_dev,*old_dev;
+	struct stdio_dev usb_kbd_dev,*old_dev;
 	struct usb_device *dev;
 	char *stdinname  = getenv ("stdin");
 
@@ -168,7 +168,7 @@
 			if(usb_kbd_probe(dev,0)==1) { /* Ok, we found a keyboard */
 				/* check, if it is already registered */
 				USB_KBD_PRINTF("USB KBD found set up device.\n");
-				old_dev = device_get_by_name(DEVNAME);
+				old_dev = stdio_get_by_name(DEVNAME);
 				if(old_dev) {
 					/* ok, already registered, just return ok */
 					USB_KBD_PRINTF("USB KBD is already registered.\n");
@@ -176,7 +176,7 @@
 				}
 				/* register the keyboard */
 				USB_KBD_PRINTF("USB KBD register.\n");
-				memset (&usb_kbd_dev, 0, sizeof(device_t));
+				memset (&usb_kbd_dev, 0, sizeof(struct stdio_dev));
 				strcpy(usb_kbd_dev.name, DEVNAME);
 				usb_kbd_dev.flags =  DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM;
 				usb_kbd_dev.putc = NULL;
@@ -184,7 +184,7 @@
 				usb_kbd_dev.getc = usb_kbd_getc;
 				usb_kbd_dev.tstc = usb_kbd_testc;
 				usb_kbd_dev.priv = (void *)dev;
-				error = device_register (&usb_kbd_dev);
+				error = stdio_register (&usb_kbd_dev);
 				if(error==0) {
 					/* check if this is the standard input device */
 					if(strcmp(stdinname,DEVNAME)==0) {
@@ -212,8 +212,8 @@
 /* deregistering the keyboard */
 int usb_kbd_deregister(void)
 {
-#ifdef CONFIG_SYS_DEVICE_DEREGISTER
-	return device_deregister(DEVNAME);
+#ifdef CONFIG_SYS_STDIO_DEREGISTER
+	return stdio_deregister(DEVNAME);
 #else
 	return 1;
 #endif
diff --git a/cpu/blackfin/jtag-console.c b/cpu/blackfin/jtag-console.c
index c995d96..1cd619f 100644
--- a/cpu/blackfin/jtag-console.c
+++ b/cpu/blackfin/jtag-console.c
@@ -7,7 +7,7 @@
  */
 
 #include <common.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <asm/blackfin.h>
 
 #ifndef CONFIG_JTAG_CONSOLE_TIMEOUT
@@ -105,7 +105,7 @@
 
 int drv_jtag_console_init(void)
 {
-	device_t dev;
+	struct stdio_dev dev;
 	int ret;
 
 	memset(&dev, 0x00, sizeof(dev));
@@ -116,7 +116,7 @@
 	dev.tstc = jtag_tstc;
 	dev.getc = jtag_getc;
 
-	ret = device_register(&dev);
+	ret = stdio_register(&dev);
 	return (ret == 0 ? 1 : ret);
 }
 
diff --git a/cpu/mpc512x/diu.c b/cpu/mpc512x/diu.c
index 70849ee..691451a 100644
--- a/cpu/mpc512x/diu.c
+++ b/cpu/mpc512x/diu.c
@@ -31,7 +31,7 @@
 #include "../../board/freescale/common/fsl_diu_fb.h"
 
 #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
-#include <devices.h>
+#include <stdio_dev.h>
 #include <video_fb.h>
 #endif
 
diff --git a/cpu/mpc8xx/lcd.c b/cpu/mpc8xx/lcd.c
index 4474e24..4b88b21 100644
--- a/cpu/mpc8xx/lcd.c
+++ b/cpu/mpc8xx/lcd.c
@@ -35,7 +35,7 @@
 #include <stdarg.h>
 #include <lcdvideo.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #if defined(CONFIG_POST)
 #include <post.h>
 #endif
diff --git a/cpu/mpc8xx/video.c b/cpu/mpc8xx/video.c
index 4a59927..c79c499 100644
--- a/cpu/mpc8xx/video.c
+++ b/cpu/mpc8xx/video.c
@@ -36,7 +36,7 @@
 #include <timestamp.h>
 #include <i2c.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 #ifdef CONFIG_VIDEO
 
@@ -1287,7 +1287,7 @@
 {
 	int error, devices = 1;
 
-	device_t videodev;
+	struct stdio_dev videodev;
 
 	video_init ((void *)(gd->fb_base));	/* Video initialization */
 
@@ -1301,7 +1301,7 @@
 	videodev.putc = video_putc;	/* 'putc' function */
 	videodev.puts = video_puts;	/* 'puts' function */
 
-	error = device_register (&videodev);
+	error = stdio_register (&videodev);
 
 	return (error == 0) ? devices : error;
 }
diff --git a/cpu/pxa/pxafb.c b/cpu/pxa/pxafb.c
index 97efcb6..d56c5f0 100644
--- a/cpu/pxa/pxafb.c
+++ b/cpu/pxa/pxafb.c
@@ -32,7 +32,7 @@
 #include <version.h>
 #include <stdarg.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <lcd.h>
 #include <asm/arch/pxa-regs.h>
 
diff --git a/drivers/input/keyboard.c b/drivers/input/keyboard.c
index 512b9f2..a5fbd5f 100644
--- a/drivers/input/keyboard.c
+++ b/drivers/input/keyboard.c
@@ -11,7 +11,7 @@
 
 #include <common.h>
 
-#include <devices.h>
+#include <stdio_dev.h>
 #include <keyboard.h>
 
 #undef KBG_DEBUG
@@ -268,7 +268,7 @@
 int kbd_init (void)
 {
 	int error;
-	device_t kbddev ;
+	struct stdio_dev kbddev ;
 	char *stdinname  = getenv ("stdin");
 
 	if(kbd_init_hw()==-1)
@@ -281,7 +281,7 @@
 	kbddev.getc = kbd_getc ;
 	kbddev.tstc = kbd_testc ;
 
-	error = device_register (&kbddev);
+	error = stdio_register (&kbddev);
 	if(error==0) {
 		/* check if this is the standard input device */
 		if(strcmp(stdinname,DEVNAME)==0) {
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index b2ee5ea..f5329a5 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -23,7 +23,7 @@
 
 #include <common.h>
 #include <command.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <net.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -243,7 +243,7 @@
 
 int drv_nc_init (void)
 {
-	device_t dev;
+	struct stdio_dev dev;
 	int rc;
 
 	memset (&dev, 0, sizeof (dev));
@@ -256,7 +256,7 @@
 	dev.getc = nc_getc;
 	dev.tstc = nc_tstc;
 
-	rc = device_register (&dev);
+	rc = stdio_register (&dev);
 
 	return (rc == 0) ? 1 : rc;
 }
diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c
index dca73b9..7b5ecb5 100644
--- a/drivers/serial/arm_dcc.c
+++ b/drivers/serial/arm_dcc.c
@@ -27,7 +27,7 @@
  */
 
 #include <common.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 #if defined(CONFIG_CPU_V6)
 /*
@@ -148,7 +148,7 @@
 }
 
 #ifdef CONFIG_ARM_DCC_MULTI
-static device_t arm_dcc_dev;
+static struct stdio_dev arm_dcc_dev;
 
 int drv_arm_dcc_init(void)
 {
@@ -165,6 +165,6 @@
 	arm_dcc_dev.putc = arm_dcc_putc;	/* 'putc' function */
 	arm_dcc_dev.puts = arm_dcc_puts;	/* 'puts' function */
 
-	return device_register(&arm_dcc_dev);
+	return stdio_register(&arm_dcc_dev);
 }
 #endif
diff --git a/drivers/serial/usbtty.c b/drivers/serial/usbtty.c
index f711d0b..cffd5a2 100644
--- a/drivers/serial/usbtty.c
+++ b/drivers/serial/usbtty.c
@@ -24,7 +24,7 @@
 #include <common.h>
 #include <config.h>
 #include <circbuf.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include "usbtty.h"
 #include "usb_cdc_acm.h"
 #include "usbdescriptors.h"
@@ -70,7 +70,7 @@
 /*
  * Instance variables
  */
-static device_t usbttydev;
+static struct stdio_dev usbttydev;
 static struct usb_device_instance device_instance[1];
 static struct usb_bus_instance bus_instance[1];
 static struct usb_configuration_instance config_instance[NUM_CONFIGS];
@@ -570,7 +570,7 @@
 	usbttydev.putc = usbtty_putc;	/* 'putc' function */
 	usbttydev.puts = usbtty_puts;	/* 'puts' function */
 
-	rc = device_register (&usbttydev);
+	rc = stdio_register (&usbttydev);
 
 	return (rc == 0) ? 1 : rc;
 }
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c
index 19d978b..4ca94cb 100644
--- a/drivers/usb/musb/musb_hcd.c
+++ b/drivers/usb/musb/musb_hcd.c
@@ -801,7 +801,7 @@
  */
 void usb_event_poll()
 {
-	device_t *dev;
+	struct stdio_dev *dev;
 	struct usb_device *usb_kbd_dev;
 	struct usb_interface_descriptor *iface;
 	struct usb_endpoint_descriptor *ep;
@@ -809,7 +809,7 @@
 	int maxp;
 
 	/* Get the pointer to USB Keyboard device pointer */
-	dev = device_get_by_name("usbkbd");
+	dev = stdio_get_by_name("usbkbd");
 	usb_kbd_dev = (struct usb_device *)dev->priv;
 	iface = &usb_kbd_dev->config.if_desc[0];
 	ep = &iface->ep_desc[0];
diff --git a/drivers/usb/musb/musb_hcd.h b/drivers/usb/musb/musb_hcd.h
index b7f571d..17e9091 100644
--- a/drivers/usb/musb/musb_hcd.h
+++ b/drivers/usb/musb/musb_hcd.h
@@ -26,7 +26,7 @@
 
 #include "musb_core.h"
 #ifdef CONFIG_USB_KEYBOARD
-#include <devices.h>
+#include <stdio_dev.h>
 extern unsigned char new[];
 #endif
 
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 6adce19..fbc4df9 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -183,7 +183,7 @@
 
 #include <version.h>
 #include <linux/types.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <video_font.h>
 
 #if defined(CONFIG_CMD_DATE)
@@ -1378,7 +1378,7 @@
 int drv_video_init (void)
 {
 	int skip_dev_init;
-	device_t console_dev;
+	struct stdio_dev console_dev;
 
 	/* Check if video initialization should be skipped */
 	if (board_video_skip())
@@ -1412,7 +1412,7 @@
 	console_dev.getc = VIDEO_GETC_FCT;	/* 'getc' function */
 #endif /* CONFIG_VGA_AS_SINGLE_DEVICE */
 
-	if (device_register (&console_dev) != 0)
+	if (stdio_register (&console_dev) != 0)
 		return 0;
 
 	/* Return success */
diff --git a/include/configs/AmigaOneG3SE.h b/include/configs/AmigaOneG3SE.h
index fe04f27..0dfb23b 100644
--- a/include/configs/AmigaOneG3SE.h
+++ b/include/configs/AmigaOneG3SE.h
@@ -363,7 +363,7 @@
 #define CONFIG_USB_UHCI		1
 #define CONFIG_USB_STORAGE	1
 #define CONFIG_USB_KEYBOARD	1
-#define CONFIG_SYS_DEVICE_DEREGISTER	1 /* needed by CONFIG_USB_KEYBOARD */
+#define CONFIG_SYS_STDIO_DEREGISTER	1 /* needed by CONFIG_USB_KEYBOARD */
 
 /*
  * Autoboot stuff
diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h
index 8315cfe..da9b1cf 100644
--- a/include/configs/MIP405.h
+++ b/include/configs/MIP405.h
@@ -415,7 +415,7 @@
 #define CONFIG_USB_STORAGE
 
 /* Enable needed helper functions */
-#define CONFIG_SYS_DEVICE_DEREGISTER		/* needs device_deregister */
+#define CONFIG_SYS_STDIO_DEREGISTER		/* needs stdio_deregister */
 #endif
 /************************************************************
  * Debug support
diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h
index 2f40ef4..a3b5c7c 100644
--- a/include/configs/MPC8610HPCD.h
+++ b/include/configs/MPC8610HPCD.h
@@ -317,7 +317,7 @@
 #define CONFIG_PCI_OHCI		1
 #define CONFIG_USB_OHCI_NEW		1
 #define CONFIG_USB_KEYBOARD	1
-#define CONFIG_SYS_DEVICE_DEREGISTER
+#define CONFIG_SYS_STDIO_DEREGISTER
 #define CONFIG_SYS_USB_EVENT_POLL	1
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME	"ohci_pci"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 15
diff --git a/include/configs/MPC8641HPCN.h b/include/configs/MPC8641HPCN.h
index 60ce0f3..955ac3d 100644
--- a/include/configs/MPC8641HPCN.h
+++ b/include/configs/MPC8641HPCN.h
@@ -391,7 +391,7 @@
 #define CONFIG_PCI_OHCI			1
 #define CONFIG_USB_OHCI_NEW		1
 #define CONFIG_USB_KEYBOARD		1
-#define CONFIG_SYS_DEVICE_DEREGISTER
+#define CONFIG_SYS_STDIO_DEREGISTER
 #define CONFIG_SYS_USB_EVENT_POLL		1
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"ohci_pci"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	15
diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h
index e214d70..e301599 100644
--- a/include/configs/PIP405.h
+++ b/include/configs/PIP405.h
@@ -361,7 +361,7 @@
 #define CONFIG_USB_STORAGE
 
 /* Enable needed helper functions */
-#define CONFIG_SYS_DEVICE_DEREGISTER		/* needs device_deregister */
+#define CONFIG_SYS_STDIO_DEREGISTER		/* needs stdio_deregister */
 
 /************************************************************
  * Debug support
diff --git a/include/configs/VCMA9.h b/include/configs/VCMA9.h
index de3092d..7edea6a 100644
--- a/include/configs/VCMA9.h
+++ b/include/configs/VCMA9.h
@@ -129,7 +129,7 @@
 #define CONFIG_DOS_PARTITION	1
 
 /* Enable needed helper functions */
-#define CONFIG_SYS_DEVICE_DEREGISTER		/* needs device_deregister */
+#define CONFIG_SYS_STDIO_DEREGISTER		/* needs stdio_deregister */
 
 /************************************************************
  * RTC
diff --git a/include/configs/gr_ep2s60.h b/include/configs/gr_ep2s60.h
index 6f58bac..7b0a08f 100644
--- a/include/configs/gr_ep2s60.h
+++ b/include/configs/gr_ep2s60.h
@@ -87,7 +87,7 @@
 #define CONFIG_CMD_USB
 #define CONFIG_USB_STORAGE
 /* Enable needed helper functions */
-#define CONFIG_SYS_DEVICE_DEREGISTER	/* needs device_deregister */
+#define CONFIG_SYS_STDIO_DEREGISTER	/* needs stdio_deregister */
 #endif
 
 /*
diff --git a/include/configs/mp2usb.h b/include/configs/mp2usb.h
index 3225ce7..ac678d0 100644
--- a/include/configs/mp2usb.h
+++ b/include/configs/mp2usb.h
@@ -216,7 +216,7 @@
 #define CONFIG_SYS_MAXARGS		32		/* max number of command args */
 #define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
 
-#define CONFIG_SYS_DEVICE_DEREGISTER           /* needs device_deregister */
+#define CONFIG_SYS_STDIO_DEREGISTER           /* needs stdio_deregister */
 
 #define CONFIG_SYS_HZ 1000
 #define CONFIG_SYS_HZ_CLOCK (AT91C_MASTER_CLOCK/2)	/* AT91C_TC0_CMR is implicitly set to */
diff --git a/include/console.h b/include/console.h
deleted file mode 100644
index bc8b139..0000000
--- a/include/console.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (C) Copyright 2000
- * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef _CONSOLE_H_
-#define _CONSOLE_H_
-
-#include <devices.h>
-
-/*
-** VARIABLES
-*/
-
-extern device_t	*stdio_devices[] ;
-extern char *stdio_names[MAX_FILES] ;
-
-#endif
diff --git a/include/iomux.h b/include/iomux.h
index 257c1f7..e38a81e 100644
--- a/include/iomux.h
+++ b/include/iomux.h
@@ -24,7 +24,7 @@
 #ifndef _IO_MUX_H
 #define _IO_MUX_H
 
-#include <devices.h>
+#include <stdio_dev.h>
 
 /*
  * Stuff required to support console multiplexing.
@@ -34,7 +34,7 @@
  * Pointers to devices used for each file type.  Defined in console.c
  * but storage is allocated in iomux.c.
  */
-extern device_t **console_devices[MAX_FILES];
+extern struct stdio_dev **console_devices[MAX_FILES];
 /*
  * The count of devices assigned to each FILE.  Defined in console.c
  * and populated in iomux.c.
@@ -43,6 +43,6 @@
 
 int iomux_doenv(const int, const char *);
 void iomux_printdevs(const int);
-device_t *search_device(int, char *);
+struct stdio_dev *search_device(int, char *);
 
 #endif /* _IO_MUX_H */
diff --git a/include/serial.h b/include/serial.h
index 57223372..821b583 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -55,7 +55,7 @@
 extern struct serial_device serial_stuart_device;
 
 extern void serial_initialize(void);
-extern void serial_devices_init(void);
+extern void serial_stdio_init(void);
 extern int serial_assign(char * name);
 extern void serial_reinit_all(void);
 
diff --git a/include/devices.h b/include/stdio_dev.h
similarity index 85%
rename from include/devices.h
rename to include/stdio_dev.h
index 3a9881b..8b06ccf 100644
--- a/include/devices.h
+++ b/include/stdio_dev.h
@@ -12,7 +12,7 @@
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
@@ -21,13 +21,13 @@
  * MA 02111-1307 USA
  */
 
+#ifndef _STDIO_DEV_H_
+#define _STDIO_DEV_H_
+
 #include <linux/list.h>
 
-#ifndef _DEVICES_H_
-#define _DEVICES_H_
-
 /*
- * CONSOLE DEVICES
+ * STDIO DEVICES
  */
 
 #define DEV_FLAGS_INPUT	 0x00000001	/* Device can be used as input	console */
@@ -36,7 +36,7 @@
 #define DEV_EXT_VIDEO	 0x00000001	/* Video extensions supported		*/
 
 /* Device information */
-typedef struct {
+struct stdio_dev {
 	int	flags;			/* Device flags: input/output/system	*/
 	int	ext;			/* Supported extensions			*/
 	char	name[16];		/* Device name				*/
@@ -60,7 +60,7 @@
 
 	void *priv;			/* Private extensions			*/
 	struct list_head list;
-} device_t;
+};
 
 /*
  * VIDEO EXTENSIONS
@@ -83,20 +83,20 @@
 /*
  * VARIABLES
  */
-extern device_t *stdio_devices[];
+extern struct stdio_dev *stdio_devices[];
 extern char *stdio_names[MAX_FILES];
 
 /*
  * PROTOTYPES
  */
-int	device_register (device_t * dev);
-int	devices_init (void);
-#ifdef CONFIG_SYS_DEVICE_DEREGISTER
-int	device_deregister(char *devname);
+int	stdio_register (struct stdio_dev * dev);
+int	stdio_init (void);
+#ifdef CONFIG_SYS_STDIO_DEREGISTER
+int	stdio_deregister(char *devname);
 #endif
-struct list_head* device_get_list(void);
-device_t* device_get_by_name(char* name);
-device_t* device_clone(device_t *dev);
+struct list_head* stdio_get_list(void);
+struct stdio_dev* stdio_get_by_name(char* name);
+struct stdio_dev* stdio_clone(struct stdio_dev *dev);
 
 #ifdef CONFIG_ARM_DCC_MULTI
 int drv_arm_dcc_init(void);
@@ -123,4 +123,4 @@
 int drv_jtag_console_init (void);
 #endif
 
-#endif	/* _DEVICES_H_ */
+#endif
diff --git a/lib_arm/board.c b/lib_arm/board.c
index 566ae16..a44d308 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -41,7 +41,7 @@
 #include <common.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <timestamp.h>
 #include <version.h>
 #include <net.h>
@@ -389,7 +389,7 @@
 	/* IP Address */
 	gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
 
-	devices_init ();	/* get the devices list going. */
+	stdio_init ();	/* get the devices list going. */
 
 	jumptable_init ();
 
diff --git a/lib_avr32/board.c b/lib_avr32/board.c
index 57115df..5b2d0ef1 100644
--- a/lib_avr32/board.c
+++ b/lib_avr32/board.c
@@ -22,7 +22,7 @@
 #include <common.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <timestamp.h>
 #include <version.h>
 #include <net.h>
@@ -350,7 +350,7 @@
 
 	bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
 
-	devices_init();
+	stdio_init();
 	jumptable_init();
 	console_init_r();
 
diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c
index 047f164..28de372 100644
--- a/lib_blackfin/board.c
+++ b/lib_blackfin/board.c
@@ -11,7 +11,7 @@
 
 #include <common.h>
 #include <command.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <environment.h>
 #include <malloc.h>
 #include <net.h>
@@ -354,8 +354,8 @@
 	/* relocate environment function pointers etc. */
 	env_relocate();
 
-	/* Initialize devices */
-	devices_init();
+	/* Initialize stdio devices */
+	stdio_init();
 	jumptable_init();
 
 	/* Initialize the console (after the relocation and devices init) */
diff --git a/lib_blackfin/post.c b/lib_blackfin/post.c
index 35ccd3c..faf6b96 100644
--- a/lib_blackfin/post.c
+++ b/lib_blackfin/post.c
@@ -22,7 +22,7 @@
  */
 
 #include <common.h>
-#include <console.h>
+#include <stdio_dev.h>
 #include <watchdog.h>
 #include <post.h>
 
diff --git a/lib_i386/board.c b/lib_i386/board.c
index e18dfa5..54ef6e7 100644
--- a/lib_i386/board.c
+++ b/lib_i386/board.c
@@ -31,7 +31,7 @@
 #include <common.h>
 #include <watchdog.h>
 #include <command.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <timestamp.h>
 #include <version.h>
 #include <malloc.h>
@@ -299,7 +299,7 @@
 	show_boot_progress(0x27);
 
 
-	devices_init ();
+	stdio_init ();
 
 	jumptable_init ();
 
diff --git a/lib_i386/video.c b/lib_i386/video.c
index cd89457..c58ed10 100644
--- a/lib_i386/video.c
+++ b/lib_i386/video.c
@@ -23,7 +23,7 @@
 
 #include <common.h>
 #include <pci.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <i8042.h>
 #include <asm/ptrace.h>
 #include <asm/realmode.h>
@@ -168,8 +168,8 @@
 {
 	u16 pos;
 
-	static device_t vga_dev;
-	static device_t kbd_dev;
+	static struct stdio_dev vga_dev;
+	static struct stdio_dev kbd_dev;
 
 	vidmem = (char *) 0xb8000;
 	vidport = 0x3d4;
@@ -203,7 +203,7 @@
 	vga_dev.tstc  = NULL;              /* 'tstc' function */
 	vga_dev.getc  = NULL;              /* 'getc' function */
 
-	if (device_register(&vga_dev) == 0) {
+	if (stdio_register(&vga_dev) == 0) {
 	    return 1;
 	}
 
@@ -220,7 +220,7 @@
 	kbd_dev.tstc  = i8042_tstc;  /* 'tstc' function */
 	kbd_dev.getc  = i8042_getc;  /* 'getc' function */
 
-	if (device_register(&kbd_dev) == 0) {
+	if (stdio_register(&kbd_dev) == 0) {
 	    return 1;
 	}
 	return 0;
diff --git a/lib_m68k/board.c b/lib_m68k/board.c
index 7d4ffc7..f73a46c 100644
--- a/lib_m68k/board.c
+++ b/lib_m68k/board.c
@@ -28,7 +28,7 @@
 #include <watchdog.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 
 #include <asm/immap.h>
 
@@ -595,8 +595,8 @@
 #endif
 
 	/** leave this here (after malloc(), environment and PCI are working) **/
-	/* Initialize devices */
-	devices_init ();
+	/* Initialize stdio devices */
+	stdio_init ();
 
 	/* Initialize the jump table for applications */
 	jumptable_init ();
diff --git a/lib_mips/board.c b/lib_mips/board.c
index f8ac234..aa5b129 100644
--- a/lib_mips/board.c
+++ b/lib_mips/board.c
@@ -24,7 +24,7 @@
 #include <common.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <timestamp.h>
 #include <version.h>
 #include <net.h>
@@ -411,8 +411,8 @@
 #endif
 
 /** leave this here (after malloc(), environment and PCI are working) **/
-	/* Initialize devices */
-	devices_init ();
+	/* Initialize stdio devices */
+	stdio_init ();
 
 	jumptable_init ();
 
diff --git a/lib_nios/board.c b/lib_nios/board.c
index 9d8eea7..cd23457 100644
--- a/lib_nios/board.c
+++ b/lib_nios/board.c
@@ -25,7 +25,7 @@
  */
 
 #include <common.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <watchdog.h>
 #include <net.h>
 #ifdef CONFIG_STATUS_LED
@@ -155,7 +155,7 @@
 	bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
 
 	WATCHDOG_RESET ();
-	devices_init();
+	stdio_init();
 	jumptable_init();
 	console_init_r();
 	/*
diff --git a/lib_nios2/board.c b/lib_nios2/board.c
index 0677e99..b142c59 100644
--- a/lib_nios2/board.c
+++ b/lib_nios2/board.c
@@ -25,7 +25,7 @@
  */
 
 #include <common.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <watchdog.h>
 #include <net.h>
 #ifdef CONFIG_STATUS_LED
@@ -161,7 +161,7 @@
 	bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
 
 	WATCHDOG_RESET ();
-	devices_init();
+	stdio_init();
 	jumptable_init();
 	console_init_r();
 
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 155171d..6dd4d56 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -25,7 +25,7 @@
 #include <watchdog.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #ifdef CONFIG_8xx
 #include <mpc8xx.h>
 #endif
@@ -932,8 +932,8 @@
 #endif
 
 /** leave this here (after malloc(), environment and PCI are working) **/
-	/* Initialize devices */
-	devices_init ();
+	/* Initialize stdio devices */
+	stdio_init ();
 
 	/* Initialize the jump table for applications */
 	jumptable_init ();
diff --git a/lib_sh/board.c b/lib_sh/board.c
index 183110f..829455d 100644
--- a/lib_sh/board.c
+++ b/lib_sh/board.c
@@ -21,7 +21,7 @@
 #include <common.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <timestamp.h>
 #include <version.h>
 #include <watchdog.h>
@@ -150,7 +150,7 @@
 	sh_flash_init,	/* Flash memory(NOR) init*/
 	INIT_FUNC_NAND_INIT/* Flash memory (NAND) init */
 	INIT_FUNC_PCI_INIT	/* PCI init */
-	devices_init,
+	stdio_init,
 	console_init_r,
 	interrupt_init,
 #ifdef BOARD_LATE_INIT
diff --git a/lib_sparc/board.c b/lib_sparc/board.c
index 628d46d..d40834b 100644
--- a/lib_sparc/board.c
+++ b/lib_sparc/board.c
@@ -28,7 +28,7 @@
 #include <common.h>
 #include <command.h>
 #include <malloc.h>
-#include <devices.h>
+#include <stdio_dev.h>
 #include <config.h>
 #if defined(CONFIG_CMD_IDE)
 #include <ide.h>
@@ -402,8 +402,8 @@
 	pci_init();
 #endif
 
-	/* Initialize devices */
-	devices_init();
+	/* Initialize stdio devices */
+	stdio_init();
 
 	/* Initialize the jump table for applications */
 	jumptable_init();
diff --git a/post/post.c b/post/post.c
index c982e27..bc8114e 100644
--- a/post/post.c
+++ b/post/post.c
@@ -22,7 +22,7 @@
  */
 
 #include <common.h>
-#include <console.h>
+#include <stdio_dev.h>
 #include <watchdog.h>
 #include <post.h>
 
